Flag table based beamforming in a handheld ultrasound device

ABSTRACT

A handheld ultrasound device comprises a plurality of components configured to provide decreased size, weight, complexity and power consumption. The handheld ultrasound device may comprise an ultrasound transducer and an analog to digital (“A/D”) converter coupled to the ultrasound transducer. A processor comprising a beamformer can be coupled to the A/D converter and configured to selectively store a plurality of signals from the A/D converter in a memory of the processor. The beamformer can be configured to implement and compress a flag table in place of a delay table. These improvements can decrease the amount of memory used to generate ultrasound images, which can decrease the size weight and power consumption of the handheld ultrasound device.

This application is a continuation-in-part application of U.S. patentapplication Ser. No. 15/467,656, filed Mar. 23, 2017, which isincorporated herein by reference in its entirety for all purposes and towhich application we claim priority under 35 USC § 120.

BACKGROUND

Ultrasound imaging is commonly used as a non-invasive, diagnosticimaging modality that provides images of the internal volumes of objectsin many different fields such as medical diagnostics and non-destructivematerials testing. For instance, ultrasound imaging can be used toprovide images of internal organs, such as an abdomen or a heart. Onelimitation in developing handheld ultrasound imaging devices withoutsacrificing image quality is the requirement of processing large amountsof data that consumes a substantial amount of computational resources.This reliance on substantial computational resources and implications ofsuch resources on the device size and power requirements has limited thedevelopment of handheld ultrasound devices that are capable of producingimages having the quality offered by conventional (i.e. non-handheld)ultrasound systems.

In light of the above, it would be advantageous to provide a handheldultrasound system and method that requires or consumes fewercomputational resources without sacrificing image quality. Ideally, suchsystems would be compact, handheld, and utilizable by individuals withno special technical training while still producing images of the sameor comparable quality to those produced by conventional or non-handheldultrasound systems.

SUMMARY

The systems, devices and methods disclosed herein are capable ofproducing high resolution ultrasound images with a handheld ultrasoundsystem with decreased computational requirements. Although specificreference is made to a handheld imaging probe for medical applications,the ultrasound system and methods disclosed herein will find applicationin many fields, such as non-destructive testing, metrology, materialsscience, aerospace, transportation infrastructure, dermatology, anddentistry.

The handheld ultrasound device comprises a plurality of componentsconfigured to provide decreased size, weight, complexity and powerconsumption. The handheld ultrasound device may comprise an ultrasoundtransducer and an analog to digital (“A/D”) converter coupled to theultrasound transducer. A processor comprising a beamformer can becoupled to the A/D converter and configured to selectively store aplurality of signals from the A/D converter in a memory of theprocessor. The selective storage of the plurality of samples from theA/D converter can decrease the amount of memory used to generateultrasound images, which can decrease the size, weight and powerconsumption of the handheld ultrasound device.

The handheld ultrasound imaging device can be configured for ease ofuse, and may comprise wireless communication circuitry to transmitimages for display. In some instances, the handheld ultrasound device isconfigured to be held in the hand of a user, and may be configured toallow a person to measure himself or herself. The handheld ultrasoundsystem comprises a housing to contain the measurement components, andthe housing is sized, in some instances, such that the user can readilygrasp the housing and lift the measurement components within thehousing. The compactness and decreased mass of the handheld ultrasoundsystem allow the system to be easily held in the hand and transported.The handheld ultrasound system may comprise a maximum dimension acrosswithin a range from about 80 mm to about 200 mm.

In an aspect, an ultrasound device to image an object comprises aprocessor coupled to the ultrasound transducer. The processor maycomprise a tangible medium configured with instructions that whenexecuted cause the processor to selectively store individual samplesfrom an analog-to-digital (A/D) converter. Each of the selectedindividual samples may correspond to an ultrasound signal from alocation in the object and an associated delay time for the ultrasoundsignal to reach the transducer from the location in the object. Thedelay time may correspond to a round-trip time of flight to thetransducer. A maximum delay error may comprise no more than half of anRF sampling period. Each of the selected individual samples may beselectively stored in a memory of the processor in accordance with aflag table. The A/D converter may be configured to output a plurality ofsamples and wherein the selected individual samples comprise no morethan about 70% of the plurality of samples and optionally no more thanabout 60%. The plurality of samples from the A/D converter may comprisea plurality of unselected samples. The plurality of unselected samplesmay be discarded prior to receipt of a last sample from the A/Dconverter. The delay time may correspond to a round-trip time of flightof the ultrasound signal from the transducer to the location and fromthe location to the transducer. The ultrasound device may comprise aplurality of transducers. There may be a delay time to said each of theplurality of transducers. The delay time may correspond to a round-triptime of flight to said each of the plurality of ultrasound transducers.For each location in the object there may be a delay time associatedwith the receipt of the ultrasound signal by the transducer. The samplecorresponding to the ultrasound signal received at the transducer may beselected in accordance with a delay time for the transducer. Theprocessor may not comprise a radiofrequency (RF) buffer to store aplurality of samples from the A/D converter. Each of the selectivelystored individual samples from the A/D converter may be selected for usewith a pixel in no more than one sampling cycle of the A/D converterafter being received by the processor. An RF sample from the A/Dconverter may be selected to be used for a certain pixel or not, in nomore than one RF sampling clock cycle after the RF sample is captured.The processor may be configured to generate an image from the selectedsamples. The processor may comprise a beamformer that utilizes a powerdraw of no more than 100 mW to generate the image. The ultrasoundtransducer may comprise a one-dimensional array of ultrasoundtransducers. The ultrasound transducer may comprise a two-dimensionalarray of ultrasound transducers. The ultrasound transducer may comprisea plurality of transducers. The plurality of transducers may comprise anumber of transducers selected from the group consisting of 64transducers, 128 transducers, and 256 transducers. The plurality ofultrasound transducers may comprise a number of transducers within arange of 32 transducers to 256 transducers.

In another aspect, an ultrasound device to generate an image of anobject may comprise a plurality of transducer elements, a front-endunit, a real-time beamformer, and an image processor. Each transducerelement may be associated with a data channel. Each data channel maycomprise a transducer that receives ultrasonic energy reflected by theregion of interest and generates radio frequency (RF) signals based onthe received reflected ultrasonic energy. The front-end unit may amplifyand digitize the RF signals received from each data channel to provideRF samples at an RF sampling rate associated with a data clock having aclock cycle. An RF sample may be received by each data channel at eachclock cycle corresponding to the RF sampling rate. Each RF sample may beassociated with one location in the scanline defined by a trajectory ofthe beam through the location of interest. The real-time beamformer mayhave a transmit beamformer and a flag table based receive beamformer.The transmit beamformer may direct a beam of ultrasound energy at alocation of interest. The beam may generate ultrasound signals along ascanline defined by a trajectory of the beam through the location ofinterest. The receive beamformer may receive reflected ultrasound energyfrom portions of the region of interest that lie along the scanline. Thereceive beamformer may comprise a flag table generated for each beam andfor each data channel and a processor that generates raw image datacomprising a plurality of pixels. The flag table may comprise a flagassociated with each of the RF samples provided by the front-end unit.An RF index may correspond to a delay time associated with receiving anRF sample based on the data clock. Each flag may be a single-bit binaryflag indicator having a positive or a non-positive value. The processormay perform operations in real-time comprising processing each of the RFsamples provided by the front-end unit based on the flag table for eachof the data channels and for each beam of ultrasound energy directed atthe location of interest. The processing may further comprise: 1)receiving an RF sample at a clock cycle of the data clock, the RF sampleassociated with a location along the scanline defined by a trajectory ofthe beam through the location of interest; 2) sending the received RFsample to a first pixel in a per-channel image buffer if the flagassociated with the received RF sample has a positive value and if theflag is a first positive flag; 3) discarding the received RF sample ifthe flag associated with the received RF sample has a non-positivevalue; 4) receiving a subsequent RF sample corresponding to a next clockcycle of the data clock; 5) sending the subsequent RF sample to a nextpixel in the per-channel image buffer if the flag associated with thesubsequent RF sample has a positive value; 6) discarding the subsequentRF sample if the flag associated with the subsequent RF sample has anon-positive value; 7) repeating steps 4-6 until all channels receive anRF sample for a last pixel in the scanline; and 8) adding the RF samplescorresponding to a pixel from all of the data channels to generate animage value for the pixel. The image processor may process the raw imagedata to provide the processed image data. The delay time may correspondto a round-trip time of flight of the ultrasound signal from a locationof the object to the transducer. The location of the object may be alocation along a scanline defined by a trajectory of the beam throughthe region of interest. The flag table may be compressed. The processormay perform further operations comprising decoding the compressed flagtable. The compressed flag table may be compressed by a factor greaterthan 10 compared to a delay table. The compressed flag table may becompressed by a factor greater than 50 compared to a delay table. Theflag table based real-time beamformer may be implemented on one or morefield programmable gate array (FPGA) chips. An equivalent gate count ofactive circuitry to implement the flag table based real-time beamformermay be no more than 100,000 exclusive of a memory component. The devicemay comprise a first dimension no more than 210 mm, a second dimensionno more than 75 mm and a third dimension no more than 38 mm. The firstdimension may comprise no more than 140 mm, the second dimension maycomprise no more than 50 mm and the third dimension may comprise no morethan 25 mm. Power may be supplied by an external power module or batteryhaving a battery lifetime of at least about 1 hour when the device isused to scan continuously. A memory of the beamformer may comprise nomore than 2.5 KB per channel of a multi-channel beamformer.

In another aspect, a method of processing ultrasound signals receivedfrom a plurality of data channels may comprise: 1) directing a beam ofultrasound energy at a region of interest, the beam generatingultrasound signals along a scanline defined by a trajectory of the beamthrough the region of interest; 2) receiving, by a plurality of datachannels, reflected ultrasound signals from portions of the region ofinterest that lie along the scanline; 3) generating, by the plurality ofdata channels, radio frequency (RF) signals based on the receivedreflected ultrasound signals; 4) amplifying and digitizing the generatedRF signals received from the plurality of data channels to provide RFsamples at an RF sampling rate associated with a data clock having aclock cycle; 5) generating a flag table for each beam and for each datachannel; 6) processing each of the RF samples based on the flag tablefor each of the data channels and for each beam of ultrasound energydirected at the region of interest; and 7) processing the raw image datato provide the processed image data. An RF sample may be received byeach of the plurality of data channels at each clock cycle correspondingto the RF sampling rate. The RF sample may be associated with a locationalong the scanline defined by a trajectory of the beam through theregion of interest. The flag table may comprise a flag associated witheach of the RF samples. Each RF index may correspond to a delay timeassociated with receiving an RF sample based on the data clock. Eachflag may be a single-bit binary flag indicator having a positive or anon-positive value. Processing may further comprise: 1) receiving an RFsample at a clock cycle of the data clock; 2) sending the received RFsample to a first pixel in a per-channel image buffer if the flagassociated with the received RF sample has a positive value and if theflag is a first positive flag; 3) discarding the received RF sample ifthe flag associated with the received RF sample has a non-positivevalue; 4) receiving a subsequent RF sample corresponding to a next clockcycle of the data clock, 5) sending the subsequent RF sample to a nextpixel in the per-channel image buffer if the flag associated with thesubsequent RF sample has a positive value; 6) discarding the subsequentRF sample if the flag associated with the subsequent RF sample has anon-positive value; 7) repeating steps 4-6 until all channels receive anRF sample for a last pixel in the scanline; and 8) adding the RF samplescorresponding to a pixel from all data channels to generate an imagevalue for the pixel. The RF sample associated with a location along thescanline may be defined by a trajectory of the beam through the regionof interest. The delay time may correspond to a round-trip time offlight of the ultrasound signal from a location of the object to thetransducer. The location of the object may be a location along ascanline defined by a trajectory of the beam through the region ofinterest. The method may comprise compressing the flag table. The methodmay comprise decoding the compressed flag table.

In another aspect, a system comprises a processor and logic encoded inone or more non-transitory computer-readable media for execution by theprocessors. When executed, the logic may be operable to performoperations comprising: 1) directing a beam of ultrasound energy at aregion of interest; 2) receiving, by a plurality of data channels,reflected ultrasound signals from portions of the region of interestthat lie along the scanline; 3) generating, by the plurality of datachannels, radio frequency (RF) signals based on the received reflectedultrasonic signals; 4) amplifying and digitizing the generated RFsignals received from the plurality of data channels to provide RFsamples at an RF sampling rate associated with a data clock having aclock cycle; 5) generating a flag table for each beam and for each datachannel; 6) processing each of the RF samples based on the flag tablefor each of the data channels and for each beam of ultrasound energydirected at the location of interest; and 7) processing the raw imagedata to provide the processed image data. The beam may generateultrasound along a scanline defined by a trajectory of the beam throughthe region of interest. An RF sample may be received by each of theplurality of data channels at each clock cycle corresponding to the RFsampling rate. The RF sample may be associated with a location along thescanline defined by a trajectory of the beam through the region ofinterest. Each RF index may correspond to a delay time associated withreceiving an RF sample based on the data clock. Each flag may be asingle-bit binary flag indicator having a positive or a non-positivevalue. The RF sample may be associated with a location along thescanline defined by a trajectory of the beam through the region ofinterest. The delay time may correspond to a round-trip time of flightof the ultrasound signal from a location of the object to thetransducer. The location of the object may be a location along ascanline defined by a trajectory of the beam through the region ofinterest. The performed operations may comprise compressing the flagtable. The performed operations may comprise decoding the compressedflag table. The system may be implemented on one or more FPGA chips. Thesystem may be implemented by an equivalent gate count of activecircuitry that is no more than 100,000 exclusive of a memory component.A memory of the system may require no more than 2.5 KB per channel of amulti-channel beamformer.

INCORPORATION BY REFERENCE

All publications, patents, and patent applications mentioned in thisspecification are herein incorporated by reference to the same extent asif each individual publication, patent, or patent application wasspecifically and individually indicated to be incorporated by reference.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features of the invention are set forth with particularity inthe appended claims. A better understanding of the features andadvantages of the present invention will be obtained by reference to thefollowing detailed description that sets forth illustrative embodiments,in which the principles of the invention are utilized, and theaccompanying drawings of which:

FIG. 1 shows a schematic of a handheld ultrasound system capable ofcommunicating with an external device.

FIG. 2 shows a block diagram of an ultrasound imaging device used toimage a region of interest.

FIG. 3 shows a block diagram of an example ultrasound device.

FIG. 4 shows a simplified example ultrasound transducer array.

FIG. 5 shows example time delays for receipt of an ultrasound signal ateach channel in an example ultrasound transducer array.

FIG. 6 shows a simplified graph of a delay curve associated with thetime delays for receipt of an ultrasound signal from each location in aline, for one transducer channel.

FIG. 7 shows a simplified graph of a portion of a delay curve associatedwith the time delays for receipt of an ultrasound signal from eachlocation in a line, for one transducer channel.

FIG. 8A shows a simplified example delay table for a channel in anexample ultrasound transducer array.

FIG. 8B shows a simplified flag table for a channel in an exampleultrasound transducer array.

FIG. 9 shows a flowchart of a method for ultrasound beamforming using aflag table or compressed flag table.

FIG. 10 shows an example computer control system that is programmed orotherwise configured to implement the methods provided herein.

FIG. 11 shows example pseudocode for implementing flag table basedultrasound beamforming.

FIG. 12 shows example circuitry for implementing flag table basedultrasound beamforming.

DETAILED DESCRIPTION

While various embodiments of the invention have been shown and describedherein, it will be obvious to those skilled in the art that suchembodiments are provided by way of example only. Numerous variations,changes, and substitutions can occur to those skilled in the art withoutdeparting from the invention. It should be understood that variousalternatives to the embodiments of the invention described herein can beemployed.

In the figures shown herein, like numbers refer to like elements.

FIG. 1 shows a schematic of a handheld ultrasound system capable ofcommunicating with an external device. The handheld ultrasound device100 can comprise one or more ultrasonic transducers, one or moreultrasound beamforming components, one or more electronic devices tocontrol the beamforming components, one or more batteries or externalpower modules, and one or more wireless transceivers.

The handheld ultrasound device can utilize components that are selectedand arranged in such a manner as to provide a decreased size and weight.The handheld ultrasound device can be configured to be held in the handof a user. The handheld ultrasound device can be configured to allow apatient to conduct a measurement on himself or herself. The handheldultrasound device can comprise a housing to contain the measurementcomponents, and the housing can be sized such that the user can readilygrasp the housing and lift the measurement components within thehousing. The compactness and decreased mass of the handheld ultrasounddevice can allow the system to be easily held in the hand andtransported.

The handheld ultrasound device can comprise a maximum dimension acrosswithin a range from about 80 mm to about 200 mm, or about 100 mm toabout 180 mm, or about 120 mm to about 160 mm, or about 130 mm to about150 mm. The handheld ultrasound device can comprise a second dimensionacross within a range from about 10 mm to about 90 mm, or about 20 mm toabout 80 mm, or about 30 mm to about 70 mm, or about 40 mm to about 60mm. The handheld ultrasound device can comprise a third dimension acrosswithin a range from about 5 mm to about 45 mm, or about 10 mm to about40 mm, or about 15 mm to about 35 mm, or about 20 mm to about 30 mm. Thehandheld ultrasound device can comprise a mass within a range from about100 grams to about 500 grams, or about 200 grams to about 400 grams, orabout 250 grams to about 350 grams.

The handheld ultrasound device can be configured without internal movingparts in order to increase the reliability of the system. The handheldultrasound device can be configured to be dropped from a distance ofabout one foot, and provide a change in measurement repeatability andaccuracy of no more than 1%, for example.

The handheld ultrasound device can utilize components selected andarranged in such a manner as to require and/or consume less memory andpower as compared with conventional or non-handheld ultrasound devices.One or more of the ultrasound beamforming components can be implementedon a field programmable gate array (FPGA). In some instances, all of thebeamforming components are implemented on the FPGA. One or more of theultrasound beamforming components can be implemented on an applicationspecific integrated circuit (ASIC). In some instances, all of thebeamforming components are implemented on the ASIC. The FPGA or ASIC canutilize an equivalent gate count of no more than about 1,000,000 gates,no more than about 500,000 gates, no more than about 200,000 gates, nomore than about 100,000 gates, no more than about 50,000 gates, no morethan about 20,000 gates, or no more than about 10,000 gates. The FPGA orASIC can utilize an equivalent gate count within a range defined by anytwo of the preceding values. The FPGA or ASIC can utilize memoryresources of no more than about 10,000 kilobits, no more than about5,000 kilobits, no more than about 2,000 kilobits, no more than about1,000 kilobits, no more than about 500 kilobits, no more than about 200kilobits, or no more than about 100 kilobits. The FPGA or ASIC canutilize memory resources within a range defined by any two of thepreceding values. The FPGA or ASIC can have a power draw of no more thanabout 1000 mW, no more than about 500 mW, no more than about 200 mW, nomore than about 100 mW, no more than about 50 mW, no more than about 20mW, or no more than about 10 mW. The FPGA or ASIC can have a power drawwithin a range defined by any two of the preceding values.

One or more batteries or external power modules can be used to power thehandheld ultrasound device. The batteries or external power modules canallow the handheld ultrasound device to be utilized for a lifetime ofgreater than about 0.5 hours, greater than about 1 hour, greater thanabout 2 hours, greater than about 5 hours, or greater than about 10hours when the handheld ultrasound device is in continuous operation.The batteries or external power modules can allow the handheldultrasound device to be utilized for a lifetime within a range definedby any two of the preceding values.

The handheld ultrasound device can be configured to utilize the systemsand methods described herein to operate with reduced memory andcomputational processing requirements as compared to traditional,non-handheld ultrasound devices. The handheld ultrasound device can beconfigured to utilize a memory no greater than 68 kB for a 32 channelultrasound system utilizing the systems and methods described herein.The handheld ultrasound device can be configured to utilize a memory nogreater than 2.5 kB per channel of the ultrasound system. The receive(Rx) beamformer can be configured to utilize a memory no greater than 68kB for a 32 channel ultrasound system. The Rx beamformer can beconfigured to utilize a memory no greater than 2.5 kB per channel of theultrasound system.

The systems and methods described herein can allow reduced memory andcomputational processing requirements while maintaining high-qualityultrasound imaging capabilities. In particular, the systems and methodscan allow the ultrasound beamforming operations with minimal error incalculated delay times. The systems and methods described herein canallow operations with errors in delay times that are within half of anRF sampling period.

The handheld ultrasound device can communicate the results of anultrasound measurement via a communication channel to a portableelectronic device 110, such as a tablet, smartphone, smartwatch,smartglasses, or other portable handheld electronic device. The handheldultrasound device can communicate the results of an ultrasoundmeasurement via a communication channel to a television or computermonitor. The communication channel can be a wired communication channel.The communication channel can be a wireless communication channel. Thewireless communication can be via Bluetooth communication or other shortdistance wireless communication. The wireless communication can be viaWi-Fi communication. The wireless communication can be via any otherwireless communication known to one having skill in the art.

The results can be partially or fully processed ultrasound images. Allprocessing of the ultrasound image can be performed on the handheldultrasound device. For instance, the handheld ultrasound device caninclude hardware or software elements that allow ultrasound signals tobe converted into electronic representations. The handheld ultrasounddevice can further include hardware or software elements that allowprocessing of the electronic representations to extract, for instance,an ultrasound image. The handheld ultrasound device can further includehardware or software elements that allow post-processing of theultrasound image to improve the image quality.

The portable electronic device can display results and analysis of theultrasound measurement on one or more applications 120. The applicationsmay comprise mobile applications, desktop applications, laptopapplication, or television applications. The one or more applicationscan comprise an environment that displays the ultrasound image. The oneor more applications can comprise an environment that allows sharing ofthe ultrasound image with a specialist, such as a radiologist orultrasound technician. The specialist can interpret the results of theultrasound image to provide clinical advice, such as a diagnosis, basedon the results of the ultrasound image. In this manner, the handheldultrasound system can be used by a patient or by a health care providereven in facilities lacking access to specialists capable of interpretingultrasound results. The one or more applications can allow sharing ofultrasound images with a specialist in near real time. This capabilitycan allow the specialist to provide instructions to the user on how tooperate the handheld ultrasound device. For instance, the near real timeimage sharing capability can allow the specialist to direct a patient orhealth care provider to move the handheld ultrasound device to adifferent location on the patient's body. The real time image sharingcapability can provide near real time feedback on whether the handheldultrasound is properly positioned to obtain ultrasound images of adesired location within the patient's body. In this manner, the handheldultrasound system can be used even by a patient or health care providerwho has little or no experience in the use of ultrasound systems.

FIG. 2 shows a block diagram of an ultrasound imaging device used toimage a region of interest. An ultrasound device 100 sends ultrasonicenergy, such as in the form of ultrasonic waves, to a medium based on aparticular region of interest 102, and receives reflected ultrasonicwaves from the region of interest. The region of interest can comprise aspace that is being imaged. The region of interest can include any oneor more objects. The region of interest can comprise a region inside ofa patient's body. In some cases, the region of interest can comprise afetus in a womb. In some instances, the region of interest can comprisean internal organ of the patient, such as a heart, lung, kidney,bladder, or any other organ. The region of interest can comprise aportion of an organ. The region of interest can comprise more than oneorgan. In some cases, the region of interest can comprise multipleobjects clustered in the same vicinity. For example, the region ofinterest can include a cluster of objects such as multiple bladderstones in a bladder. In some cases, the region of interest can representmultiple portions or landmarks of an organ, such as multiple componentsof a heart. For example, such portions or landmarks of a heart caninclude a right ventricle, a left ventricle, a right atrium, a leftatrium, and a thoracic aorta. The systems and methods described hereincan be applied to imaging of regions that include multiple objects.

As described in more detail below, the ultrasound device 100 can processthe reflected ultrasonic waves and can send processed image data to adisplay device 110. The display device can display an ultrasound image112 based on the processed image data received from the ultrasounddevice. In some cases, the ultrasound image can show one or more objectslocated in a particular space that reflect ultrasonic waves emitted bythe ultrasound device back to the ultrasound device. The display devicecan be located at a position near to the ultrasound device, such as inthe same room as the ultrasound device. The display device can belocated at a position remote from the ultrasound device. For instance,the ultrasound device can be located at a physician's office while thedisplay device can be located at a hospital or the office of aspecialist who is able to interpret ultrasound images. The displaydevice can be configured to communicate with an image reproductiondevice such as a digital display, a printer, a wearable device, anaugmented-reality device, a virtual-reality device, a 3-dimensional (3D)display, etc.

FIG. 3 shows a block diagram of an example ultrasound device. Theultrasound device 100 can comprise a transducer array 300. Thetransducer array can comprise one or more transducer elements. Eachtransducer element can be referred to as a channel. The transducer arraycan comprise 32 transducer elements, 64 transducer elements, 128transducer elements, or 256 transducer elements. The transducer arraycan comprise a number of elements within a range defined by any two ofthe preceding values. The transducer array can comprise fewer than 32transducer elements. The transducer array can comprise more than 256transducer elements.

In some cases, each of the transducer elements can be of the same type.For example, the transducer elements can be piezoelectric transducerelements. The transducer elements can be capacitive transducer elements.The transducer elements can be any transducer element as is known to onehaving skill in the art. In some cases, the transducer elements can varyin type. For instance, some transducer elements can be piezoelectrictransducer elements while other transducer elements are capacitivetransducer elements. When an electrical pulse is applied to a giventransducer element, the transducer element vibrates and produces theultrasound, or ultrasonic wave, which is directed at the region ofinterest. Conversely, when a given transducer element is vibrated byreturning ultrasound echoes from objects in the region of interest, thetransducer element produces radio frequency (RF) signals. Since thetransducer elements can act to both produce and receive ultrasoundsignals, the ultrasound device can further comprise a switch 302. Theswitch may comprise a plurality of switches. The switch may comprise aswitch network. The switch may comprise a multiplexer (mux). The switchmay comprise a demultiplexer (demux). The switch may comprise aplurality of muxes. The switch may comprise a plurality of demuxes.

The ultrasound device can further comprise a transmit (Tx) beamformer310. The Tx beamformer causes a pulse generator 312 to generateelectrical signals based on transmit beamforming. These pulses are thenapplied to the transducer array to direct ultrasound waves to the regionof interest. The electrical signals or pulses can be produced at apredetermined pulse rate. For instance, the electrical signals can beproduced at a rate greater than 100 pulses per second, greater than 200pulses per second, greater than 500 pulses per second, greater than 1000pulses per second, greater than 2000 pulses per second, greater than5000 pulses per second, or greater than 10000 pulses per second. Theelectrical signals may be produced at a pulse rate within a rangedefined by any two of the preceding values. The pulse generator maycontrol the length of a pulse. The pulse generator may control the totalnumber of pulses applied during a signal acquisition. The pulsegenerator may control the amplitude of the electrical signals, which mayin turn control the intensity and energy of an ultrasound beam producedby the transducer array.

The transducer array can be positioned in direct contact with a surface,such as the body of a patient. For instance, the transducer array can bepositioned in direct contact with the abdomen of a patient. In somecases, the transducer array is not in direct contact with the surface.For example, there can be water or another medium between the transducerarray and the surface. In some cases, an ultrasound gel can be used tocouple the transducer array with a surface. The transducer array shapesa beam of ultrasonic waves or pulses to give the beam a particular sizeand shape at various depths within a particular space beneath thesurface. In some cases, the transducer array focuses ultrasonic waves toa particular location. In other cases, the transducer array producesultrasonic waves which are not localized to a particular location. Forinstance, the transducer array can utilize synthetic aperture imaging.The transducer array can utilize multi-beam imaging. The transducerarray can scan the ultrasound beam over region of interest.

When the transducer array receives ultrasonic waves reflected by objectsin the region of interest, the transducer array generates RF signalsbased on the reflected ultrasonic waves. The reflected ultrasonic wavescan also be referred to as ultrasonic echoes, or ultrasound echoes, orechoes. The RF signals can also be referred to as raw RF data.

Reception of the ultrasound signals is controlled by a receive (Rx)beamformer 320. The Rx beamformer can comprise a table 322. The tablecan comprise a flag table or a compressed flag table, as discussedherein. The Rx beamformer can comprise a table decoder 324, as describedherein. The table decoder can comprise a flag table decoder, asdescribed herein. The Rx beamformer can be communicatively coupled to anRx front-end unit 326. The Rx front-end unit can amplify and digitize RFsignals from the transducer array to provide RF samples. The Rxfront-end unit can comprise an analog-to-digital converter (ADC). The Rxfront-end unit can send the RF samples to the Rx beamformer. In someinstances, the Rx front-end unit amplifies and/or filters the RF signalsbefore digitizing them. In some cases, the amplifier gain of the Rxfront-end unit can vary over time, in order to compensate forattenuation of the ultrasound signals.

The Rx beamformer can generate raw image data based on the RF samples,where the Rx beamformer performs beamforming functions in order togenerate the raw image data. The Rx beamformer can create an intensitymap of the reflected ultrasonic waves corresponding to every point inthe field of view. The Rx beamformer can map the received signal to alocation in an image and coherently sum the signals from all transducerelements for every point in the field of view.

Given a high enough sampling rate, one or more of the transducers mayreceive a plurality of RF samples corresponding to an ultrasound signalemanating from a particular location in a region of interest. In the farfield, this may occur when the sampling rate is greater than twice thespacing between pixels in an image line divided by the speed of sound.Each of the plurality of RF samples corresponding to the ultrasoundsignal from the location may be regarded as conveying information aboutthe location that is at least partially redundant. Thus, any one of theplurality of RF samples corresponding to the ultrasound signal from thelocation may be sufficient to reconstruct image information for thatlocation. The Rx beamformer may therefore select to utilize only afraction of the RF samples corresponding to the ultrasound signal fromthe location. The Rx beamformer may select to utilize one or more of theRF samples in order to reconstruct image information for the location.For instance, the Rx beamformer may select to utilize the RF sample thatis closest to the center of a given pixel. Utilizing only a fraction ofthe RF samples may allow for a reduction in the memory requirements forthe handheld ultrasound device.

The Rx beamformer can determine which of the RF samples are to be usedto generate raw image data based on the table. The table can indicatewhich RF samples are to be used to generate raw image data and which RFsamples are not to be used to generate raw image data. The table can bepredetermined in that information in the table is generated prior to animaging session. The table can be pre-loaded in the Rx beamformer or inany other suitable storage location. During runtime, the Rx beamformercan check the table during an imaging session in order to determinewhich RF samples to use to generate raw image data. Implementations ofthe table are described in more detail herein.

The Rx beamformer can generate raw image data based on the RF samplesthat are to be used to generate raw image data. The raw image data canthen be sent to an image processor 330. The image processor can processthe raw image data received from the Rx beamformer to provide processedimage data.

The ultrasound device can further comprise one or more sensors 340. Thesensors can include position sensors, rotational sensors, tilt sensors,gyroscopes, or accelerometers for positioning the ultrasound device. Thesensors can comprise any other positioning sensor as is known to onehaving skill in the art.

The ultrasound device can further comprise one or more peripherals 350.The peripherals can comprise one or more display devices. Theperipherals can send processed image data to remote display devices,such as a 2D display, a 3D display, a printer, a wearable device, anaugmented-reality device, or a virtual-reality device. Remote displaydevices can comprise stand-alone computers, tablet computers,smartphones, dedicated monitors, etc. The peripherals can comprise oneor more medical devices, such as an electrocardiograph (ECG or EKG),pulse oximeter, position tracker, needle guide, or any other medicaldevice as is known to one having skill in the art.

One or more of the components 300, 302, 310, 312, 320, 322, 324, 326,330, 340, or 350 of the ultrasound device can be implemented on an FPGA.In some cases, all of the components 300, 302, 310, 312, 320, 322, 324,326, 330, 340, or 350 of the ultrasound device are implemented on anFPGA. In some cases, components 320, 322, and 324 are implemented on anFPGA. One or more of the components 300, 302, 310, 312, 320, 322, 324,326, 330, 340, or 350 of the ultrasound device can be implemented on anASIC. In some cases, all of the components 300, 302, 310, 312, 320, 322,324, 326, 330, 340, or 350 of the ultrasound device are implemented onan ASIC. In some cases, components 320, 322, and 324 are implemented onan ASIC. The FPGA or ASIC can utilize an equivalent gate count of nomore than about 1,000,000 gates, no more than about 500,000 gates, nomore than about 200,000 gates, no more than about 100,000 gates, no morethan about 50,000 gates, no more than about 20,000 gates, or no morethan about 10,000 gates. The FPGA or ASIC can utilize an equivalent gatecount within a range defined by any two of the preceding values. TheFPGA or ASIC can utilize memory resources of no more than about 10,000kilobits, no more than about 5,000 kilobits, no more than about 2,000kilobits, no more than about 1,000 kilobits, no more than about 500kilobits, no more than about 200 kilobits, or no more than about 100kilobits. The FPGA or ASIC can utilize memory resources within a rangedefined by any two of the preceding values. The FPGA or ASIC can have apower draw of no more than about 1000 mW, no more than about 500 mW, nomore than about 200 mW, no more than about 100 mW, no more than about 50mW, no more than about 20 mW, or no more than about 10 mW. The FPGA orASIC can have a power draw within a range defined by any two of thepreceding values.

FIG. 4 shows a simplified example ultrasound transducer array. Thetransducer array 300 can comprise transducer elements 402, 404, 406,408, 410, 412, 414, and 416. The transducer elements can bepiezoelectric transducer elements. The transducer elements can becapacitive transducer elements. The transducer element can be any othertransducer elements as are known to one having skill in the art.

The transducer array can be any type of transducer array as is known toone having skill in the art. For example, the transducer array can be aone-dimensional array. The transducer array can be a linear sequentialarray. The transducer array can be a linear phased array. The transducerarray can be a curved or convex sequential array. The transducer arraycan be an annular array. The transducer array can be a 2-dimensionalarray. The transducer can be a 2-dimensional rectangular array. Thetransducer array can include any number of transducer elements.

The transducer array shapes a beam of ultrasonic waves or pulses to givethe beam a particular size and shape at various depths within aparticular space beneath a surface. In some cases, the transducer arrayfocuses ultrasonic waves to a particular location. In other cases, thetransducer array produces ultrasonic waves which are not localized to aparticular location. For instance, the transducer array can utilizesynthetic aperture imaging. The transducer array can utilize multi-beamimaging. The transducer array can scan the ultrasound beam over theregion of interest.

Regardless of the manner in which the transducer array directsultrasonic waves at the region of interest, reflected ultrasound signalswill emanate from multiple locations within the region of interest. Forease of illustration, FIG. 4 shows a single location 420 from which anultrasound signal emanates. The ultrasound signal emanating from thelocation may comprise a reflected ultrasound signal.

The location can comprise a portion of a region of interest such as anorgan in a person's body. Multiple locations can comprise multipledifferent portions of the region of interest. As such, ultrasoundsignals received from a set of locations allow reconstruction of animage of the region of interest.

The distance between each transducer element and each specific location,as well as the speed of ultrasound signals, can be known orpredetermined. The round-trip time of flight is the time it takes for anultrasound wave to travel from one or more transmitting transducerelements to a given region of interest, to be reflected, and to bereceived by a transducer element. For a given signal, the transmittingtransducer element can be the same as the receiving transducer element.However, transmitting transducer elements and receiving transducerelements are not necessarily the same. For example, the round-trip delaycan be the one-way delay from one or more transmitting elements to alocation plus the one-way delay from the field point to a differentreceiving transducer element. This round-trip time of flight can bereferred to as a delay time. The delay time of each respective signalcan be converted to a distance.

FIG. 5 shows example time delays for receipt of an ultrasound signal ateach channel in an example ultrasound transducer array. Each channel inthe transducer array can produce a series of RF samples over time. Forinstance, channel 402 can produce a series of RF samples 502. Channel404 can produce a series of RF samples 504. Channel 406 can produce aseries of RF samples 506. Channel 408 can produce a series of RF samples508. Channel 410 can produce a series of RF samples 510. Channel 412 canproduce a series of RF samples 512. Channel 414 can produce a series ofRF samples 514. Channel 416 can produce a series of RF samples 516.

Due to the geometric relationships between the location and the varioustransducer elements, an ultrasound signal emanating from the location420 is first received by channel 402. Prior to receipt of the ultrasoundsignal from the location, RF samples received at channel 402 contain noinformation that can be used to reconstruct one or more image pixelscorresponding to that location. Such RF samples are indicated as whiteboxes in FIG. 5. Upon receipt of the ultrasound signal at a first delaytime, channel 402 receives one or more RF samples 522 containinginformation that can be used to reconstruct one or more image pixelscorresponding to the location. Such RF samples are indicated as blackboxes in FIG. 5. The ultrasound signal is next received by channel 404at a second delay time, which produces one or more RF samples 524containing information that can be used to reconstruct one or more imagepixels corresponding to the location. The ultrasound signal is receivedsequentially at third, fourth, fifth, sixth, seventh, and eight delaytimes, respectively, by channels 406, 408, 410, 412, 414, and 416. Inresponse, channels 406, 408, 410, 412, 414, and 416 each produce one ormore RF samples 526, 528, 530, 532, 534, and 536, respectively,containing information that can be used to reconstruct one or more imagepixels corresponding to the location.

The schematics detailed in FIGS. 4 and 5 apply to ultrasound signalsreceived from a single location in space. One or more of the transducersmay receive ultrasound signals from a plurality of locations in space.Each such ultrasound signal may be associated with a plurality of delaytimes at each transducer channel.

RF samples from all receiving transducer elements can be used. That isto say, a pixel in an image can be reconstructed using multiple RFsamples received by multiple transducer elements. For instance, one ormore RF samples from each transducer element can be used to reconstructa pixel in an image.

When the RF data is sampled at a high enough sampling frequency, eachreceiving transducer element can receive a larger number of RF samplesthan the number of image pixels corresponding to a line in an image fora given data acquisition. An RF sample that is used in reconstructing aline in an image can be used only once for a single pixel for each line.The Rx beamformer can determine whether each RF sample received by eachchannel is to be used, if at all, in the reconstruction of an image orone or more pixels in an image. A used RF sample may be used forreconstruction of a fraction of the total number of image pixels. Insome cases, a used RF sample may be used for reconstruction of one ormore image pixels.

A trend can arise when examining the relationships between ultrasoundsignals obtained at a single transducer element for locations that arelocated near to one another. Each used RF sample received by a giventransducer can be associated with a location. The locations can beindexed by image pixel index numbers. The pixel indices can be definedwithin each image line of an image. The pixel index can start at thelocation in the line that is closest to the transducer array. The pixelindex can increase for locations that are further from the transducerarray.

For each transducer, an RF sample received earlier in time cancontribute to the reconstruction of an image pixel located closer tothat transducer. For instance, the first used RF sample of a channel canbe associated with the first image pixel of an image line, the secondused RF sample can be associated with the second image pixel of theimage line, and so on. The Rx beamformer can continuously increase thepixel index for each Rx channel.

FIG. 6 shows a simplified graph of a delay curve associated with thetime delays for receipt of an ultrasound signal from each location in aline, for one transducer channel. The x-axis corresponds to the imagepixel index. The y-axis corresponds to the RF sample index, or thesample number at which the ultrasound signal is received at a giventransducer. The delay curve can be defined as the delay time as afunction of image pixel index. The RF sample index can be approximatelyproportional to the delay time. In cases in which the transducer elementsamples at a uniform sampling rate, the RF sample index can beproportional to the delay time. If the image pixel spacing is uniform,the delay curve 602 may be strongly non-linear in the near field forpixels characterized by small indices. If the image pixel spacing isuniform, the delay curve may become nearly linear in the far field forpixels characterized by large indices. A nearly linear portion 604 ofthe delay curve is described in more detail in FIG. 7.

FIG. 7 shows a simplified graph of a portion of a delay curve associatedwith the time delays for receipt of an ultrasound signal from eachlocation in a line, for one transducer channel. An example of the nearlylinear behavior of the delay curve in the far field is provided. In thefar field, image pixels with indices 610, 611, and 612 can be associatedwith RF samples with indices 4700, 4708, and 4716, respectively.

In both the strongly non-linear and nearly linear portions of the delaycurve, the delay time can increase monotonically with the pixel index.The combination of sparsity, periodicity, and monotonicity can allowcompression of the table. This, in turn, can allow for a significantreduction in the computational resources required to carry out Rxbeamforming on a handheld ultrasound device. For instance, compressionof the table can allow for a significant reduction in the memoryresources required to carry out Rx beamforming on a handheld ultrasounddevice.

The table can include positive indicators that indicate which RF samplesare to be used to generate image data. The table can also includenegative indicators that indicate the RF samples that are not to be usedto generate image data. An indicator can associate with each RF samplereceived by each channel. In other words, each RF sample can beassociated with either a positive indicator or a negative indicator.

The table can be referred to as a flag table. The flag table can utilizepositive flags as positive indicators and negative flags as negativeindicators. In this manner, each RF sample can be associated with eithera positive flag or a negative flag. Each indicator or flag can be a1-bit indicator. For example, a positive indicator can be a binary “1”,or a “1-flag”. A negative indicator can be a binary “0”, or a “0-flag”.Other binary conventions can be utilized, such as assigning a 0-flag asa positive indicator and a 1-flag as a negative indicator.Alternatively, more than one bit can be used as an indicator. In suchcases, any binary coding scheme can be used to assign positive andnegative indicators.

For each RF sample from each channel, the RF sample can be used, orstored into a memory device, if the flag is a 1-flag. The RF sample canbe discarded, or not stored into memory, if the flag is a 0-flag. An RFsample with a 1-flag and associated with an i^(th) image pixel can bestored in association with the i^(th) image pixel in an image line of animage buffer. In some cases, two or more RF samples (originating, forinstance, from two or more channels), each with a 1-flag and associatedwith an i^(th) image pixel, can be added together in the image buffer.

The image buffer can store image data. In some cases, the image buffercan not store an entire set of image data, but instead can store onlyone or more partial or complete image lines. The image buffer can storemultiple lines. Once the one or more image lines have been stored withinthe image buffer and are ready for further processing, the image datafor the one or more lines can be transferred to the image processorbefore the beamformer starts to receive the RF samples for the nextimage line. Thus, it can be sufficient for the image buffer to have amemory capacity for only one image line or multiple image lines. It cannot be necessary for the image buffer to have a memory capacity for thefull image data.

Because all RF samples are processed immediately when they are received,there can be no need for an RF buffer. The flag table can replace adelay table which stores the delay values for all image pixels. In somecases, the flag table can require a smaller amount of memory than adelay table. Moreover, the real-time processing capability enabled bythe flag table can eliminate the need for an RF buffer, further reducingthe memory requirement.

FIGS. 8A and 8B show a simplified example delay table for a channel inan example ultrasound transducer array and a simplified flag table for achannel in an example ultrasound transducer array, respectively. Asshown in FIG. 8A, a delay table can store a delay time for each imagepixel, for each transducer element. For instance, a delay table 800 canstore delay times of 4700, 4708, 4716, 4724, and 4732 for image pixelswith indices of 610, 611, 612, 613, and 614, respectively. A delay tablecan also store delay times for image pixels with indices smaller than610 and for image pixels with indices greater than 614. The need tostore delay times can require substantial memory resources. Forinstance, a delay table for an ultrasound system utilizing 32 channelsand 6400 RF samples per channel, with an image resolution of 76×761pixels, can require the storage of 2 bytes of data for each delay time.This can correspond to a delay table size of approximately 3.53 MB.Additionally, use of a delay table can require the use of an RF buffer.For an ultrasound system utilizing 32 channels, 6400 RF samples perchannel, and 2 bytes of memory per RF sample, an RF buffer ofapproximately 0.4 MB can be required. Thus, the memory resourcesrequired for implementing a delay table using such an exemplaryultrasound system can total approximately 3.93 MB.

As shown in FIG. 8B, a flag table can store a 1-bit indicator for eachRF sample received at each channel. For instance, a flag table 810 canstore a 0-flag, 1-flag, 0-flag, 0-flag, 0-flag, 0-flag, 0-flag, 0-flag,0-flag, 1-flag, 0-flag, 0-flag, 0-flag, 0-flag, 0-flag, 0-flag, 0-flag,1-flag, and 0-flag for RF samples with indices 4699, 4700, 4701, 4702,4703, 4704, 4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714,4715, 4715, and 4717, respectively. A flag table can also store 1-bitindicators for RF samples with indices less than 4699 or greater than4717. A flag table can store 1-bit indicators for all RF samplesreceived at each channel. The number of 1-bit indicators stored in aflag table can be greater than the number of delay times stored in adelay table. However, flag table can utilize fewer memory resourcesowing to the use of 1-bit flags in place of much larger delay times,such as 2-byte delay times. For instance, a flag table for an ultrasoundsystem utilizing 32 channels, 6400 RF samples per channel, and 2 bytesof memory per RF sample, with an image resolution of 76×761 pixels, canrequire the storage of a flag table with a size of approximately 1.86MB. The use of a flag table can obviate the need for an RF buffer. Thus,the use of a flag table can reduce the memory requirements for anultrasound device by a factor greater than 2 compared to the use of adelay table. The exact factor may depend on the fraction of RF samplesused and the amount of memory used to store each delay time inconventional beamforming. For instance, using ⅛ of the RF samples mayyield a flag table with 8 times more entries than a delay table utilizedin conventional beamforming. However, each entry in the flag table mayoccupy only 1 bit, compared to 16 bits in a delay table. Thus, the flagtable may reduce the overall memory requirements by a factor greaterthan 2 in this example. The used RF samples can comprise no more thanabout 1% of the total number of RF samples, no more than about 2% of thetotal number of RF samples, no more than about 5% of the total number ofRF samples, no more than about 10% of the total number of RF samples, nomore than about 20% of the total number of RF samples, or no more thanabout 50% of the total number of RF samples. The used RF samples cancomprise a portion of the total number of RF samples within a rangedefined by any two of the preceding values.

Delay times can be pre-calculated based on every distance from eachtransducer element to each focus point in space that is to bereconstructed. Each delay time can be saved in a look-up table. Eachreceiving transducer element can have a predetermined delay timeassociated with each location in a space being imaged. The delay timescan be stored in advance of imaging. Similarly, the flag table, which isconstructed from the delay times, can be stored in advance of imaging.The flag table can then be later accessed during operation. In somecases, the flag table can not change as long as the geometry of theimaging space, the transducer array, and/or the imaging scheme do notchange.

To determine which of the RF samples are to be used to generate imagedata, the Rx beamformer can determine which of the RF samples areassociated with positive indicators in the flag table. In such adetermination, positive indicators can indicate the RF samples that areto be used to generate image data. For example, if a given RF sample isassociated with a 1-flag in the flag table, that RF sample can be usedto generate image data. Accordingly, the Rx beamformer can send incomingRF samples associated with a 1-flag to the image buffer.

To determine which of the RF samples are not to be used to generateimage data, the Rx beamformer can determine which of the RF samples areassociated with negative indicators in the flag table. In such adetermination, negative indicators can indicate the RF samples that arenot to be used to generate image data. For example, if a given RF sampleis associated with a 0-flag in the flag table, that RF sample can not beused to generate raw image data. Accordingly, the Rx beamformer canignore incoming RF samples associated with a 0-flag.

The Rx beamformer can send the RF samples that are to be used togenerate image data to an image buffer, where the RF samples that are tobe used to generate image data are added to the corresponding imagepixel in the image buffer. The index of the corresponding image pixelcan be one more than the number of RF samples in this Rx channel thathave been used so far. The Rx beamformer can send each RF sampleassociated with a positive indicator to the image buffer immediatelyafter acquisition of that RF sample.

An RF sample can be received by each channel at every data clock. The Rxbeamformer can check the indicator or flag for the current RF sample. Ifthe flag is a 0-flag, the Rx beamformer can discard the RF sample. Ifthe flag is a 1-flag, the Rx beamformer can send the RF sample to animage buffer. The first used RF sample of the channel can be added tothe first pixel in the image line of the image buffer, and the followingused RF samples can be added to the following pixels in the image lineof the image buffer, in the order of arrival.

When the slowest channel receives the RF sample for a given pixel, theRF samples from all channels for this pixel can be summed to calculatethe image value of this pixel. For instance, the slowest channel can beone of the two edge channels of the active Rx aperture, or the first orlast transducer in a line of transducers. Thus, the Rx beamformer canonly need to check the progress of the two edge channels. When the twoedge channels receive RF samples for a given pixel, the Rx beamformercan presume that all other channels have received RF samples for thepixel.

The Rx beamformer can discard the RF samples that are not to be used togenerate image data. By not storing the RF samples that are not to beused to generate image data, the memory consumption can be reduced.

The 1-flags and 0-flags in the flag table can have a characteristicpattern of bits, and this pattern can be used to compress the flag tablefurther. The flag table can be compressed in order to further reducememory consumption. The compression can occur when the flag table isconstructed and before the Rx beamformer accesses the flag table duringruntime. During runtime, the Rx beamformer can decode the compressedflag table in order to determine which of the RF samples are to be usedto generate raw image data. The flag table can be decoded in real time,so as to determine which RF samples to use in real time.

The flag table can include a predetermined pattern of positiveindicators and negative indicators which can be substantially periodic.The periodicity can be especially pronounced in the far field. Theperiodicity can arise because, in the far field, the distances from agiven transducer element to each location increases almost linearly, asa result of the uniform spacing between image pixels in an image line.Also, the delay times associated with those distances can increasesubstantially linearly.

As shown in FIGS. 6 and 7, the delay curve becomes substantially linearin the far field. This behavior is manifested in the flag table as shownin FIG. 8B, where the number of 0-flags between two consecutive 1-flagsis substantially constant for RF samples obtained from locations thatare relatively far from the transducer. The relatively constant numberof 0-flags between two consecutive 1-flags can allow for furthercompression of the flag table. The number of 0-flags between twoconsecutive 1-flags can be referred to as NZ. There can be apredetermined number of 0-flags between two consecutive 1-flags, andthis pattern can repeat. If the delay curve were perfectly linear, thenthe flag table would always have the same number of 0-flags between two1-flags. However, because the delay curve is not perfectly linear, thenumber of 0-flags between two 1-flags will change over the field of RFsamples.

The space surrounding a given transducer element can be divided into twozones or regions. The zone relatively close to the transducer elementcan be referred to as the near field, and the zone further from thetransducer element can be referred to as the far field. The behavior ofthe delay curve determines how NZ changes when moving from the nearfield to the far field. An initial value of NZ can be determined by thestarting image depth, the transducer element location, and the angle ofthe image line. For instance, a shallow imaging depth will produce arelatively small initial NZ, as the difference in the distance from atransducer to a first image pixel and the distance from the transducerto a second image pixel located adjacent to the first image pixel isrelatively small for a shallow imaging depth. A deeper imaging depthwill produce a relatively large initial NZ, as the difference in thedistance from a transducer to a first image pixel and the distance fromthe transducer to a second image pixel located adjacent to the firstimage pixel is relatively large for a deeper imaging depth. At nearfield, NZ can be relatively small. NZ can monotonically increase withdistance from the transducer to a location. At far field, NZ canconverge to a nearly constant number which is determined by the RFsampling rate and the image pixel spacing. Thus, for instance, NZ canconverge to a value of 7 in the far field, as in FIG. 8B. NZ canconverge to any non-negative numerical value. NZ can converge to anynon-negative integer value.

For portions of the flag table where the delay curve is approximatelylinear, less information can need to be saved because informationspecifying the slope of the delay curve, which does not change much, canbe saved instead. The value of NZ can be correlated to the slope of thedelay curve. Because the delay curve is mostly linear, but not perfectlylinear, the slope of delay curve can change over the region beingimaged. Thus, the compressed flag table can store a representation ofonly the initial slope of the delay curve and the locations where theslope of the delay curve changes. As such, the compressed flag table maynot need to save all 1-flags and 0-flags. This can all reduce the sizeof the compressed flag table.

The flag table encoder can store the RF sample index of the firstpositive indicator. The flag table encoder can assign an initial NZbased on the number of negative indicators between the two firstpositive indicators. The flag table encoder can assume that the nextpositive indicator will be attained after NZ negative indicators. Theflag table encoder can examine the flag table to determine whether thisbehavior is observed. If the flag table fails to conform to thisbehavior, the flag table encoder can alter the value of NZ in order toaccount for the non-linear behavior of the delay curve. If a negativeindicator is observed when a positive indicator is expected, the flagtable encoder can alter the value of NZ by increasing this value. If apositive indicator is observed when a negative indicator is expected,the flag table encoder can regard this behavior as an exception andleave NZ at its present value.

The predetermined pattern can be related to the slope of the delaycurve. Information about the slope can be stored in the compressed flagtable. The delay curve can be defined as the delay time as a function ofimage pixel index. The slope information can be predetermined andalready stored in the compressed flag table before imaging. The slopecan be equivalent to NZ, as NZ=round(slope−1).

The flag table encoder can start with the index of the first 1-flag andan initial NZ for the first two 1-flags. The flag table encoder can thenscan the flag table, expecting a 1-flag after every NZ 0-flags based onthe predetermined pattern. In some cases, a flag can not match thisexpectation. Such a disagreement between the position of the 1-flagpredicted by NZ and the actual position of the 1-flag can indicate thatthe slope of the delay curve has changed or there has been aquantization error. The beamformer can only need to store the index ofeach flag at which this disagreement occurs. This can compress the datain the flag table.

Owing to the nature of the delay curve, the number of 0-flags betweentwo 1-flags can only increase with larger and larger pixel index. Assuch, when there is an unexpected 0-flag, it can be assumed that theslope has increased. Thus, when there is an unexpected 0-flag, the flagtable encoder can monotonically increase NZ by 1, as more 0-flagsbetween two 1-flags can be expected from the functional form of thedelay curve. The next flag can be expected to be a 1-flag.

In some cases, an unexpected 1-flag can occur such that there are fewer0-flags between two 1-flags than expected from NZ. The functional formof the delay curve can lead to a belief that this should not happen.Thus, in such a case, a quantization error can be presumed. Anunexpectedly early 1-flag can be considered an exception. In the case ofan unexpectedly early 1-flag, the flag table encoder can keep thecurrent NZ. The flag table encoder can store the exception. The nextflag can be expected to be a 0-flag. The flag table encoder can continuescanning until the last flag has been checked.

The aforementioned activities can produce a compressed flag table. Thecompressed flag table can comprise an index of the RF sample at whichthe first 1-flag occurs, an initial NZ, and a list of the indices of RFsamples that do not match the expected pattern. The list of RF sampleindices that do not match the expected pattern can comprise a list ofunexpected 0-flags and unexpected 1-flags. Since the compressed flagtable can store only a few pieces of information that specify the fullpattern of 1-flags and 0-flags in the flag table, as opposed to a fulllist of 1-flags and 0-flags stored in the flag table, the compressedflag table can be further substantially reduced in size. For instance, acompressed flag table for an ultrasound system utilizing 32 channels and6400 RF samples per channel, with an image resolution of 76×761 pixels,can require only approximately 68 kB of storage space. This can becompared to storage space of approximately 1.86 MB for the full flagtable and 3.93 MB for a delay table for an ultrasound system operatingwith the same parameters. Thus, the compressed flag table can reduce thestorage requirements by a factor of greater than 25 compared to the fullflag table and by a factor of greater than 50 compared to the delaytable. The compressed flag table can reduce the storage requirements bya factor of greater than 5, greater than 10, greater than 50, greaterthan 100, greater than 250, greater than 500, or greater than 1000compared to the full flag table. The compressed flag table can reducethe storage requirements by a factor of greater than 5, greater than 10,greater than 25, greater than 100, greater than 250, greater than 500,or greater than 1000 compared to the delay table.

The Rx beamformer can decode the compressed flag table at runtime. Thefirst data entries in the compressed flag table can comprise the indexof the first used RF sample and an initial NZ. The beamformer canutilize a counter to track the number of 0-flags that have occurredsince the last 1-flag. In some cases, no RF sample is stored until thecurrent RF sample index reaches the index of the first used RF sample.When the current RF sample index reaches the value of the first index,the RF sample can be stored to the first image pixel location in theimage buffer. The Rx beamformer can then skip the next NZ samples beforestoring an RF sample to the next location in the image buffer, which canoccur when the counter reaches the current NZ. The Rx beamformer canaccount for indices that do not match the flag pattern expected from thevalue of NZ. When the current RF sample index reaches the value of thenext data entry in the compressed flag table, which may store the nextRF sample index that does not match the expected flag pattern, the Rxbeamformer may recognize that the current RF sample does not match theexpected flag pattern. For instance, if the beamformer notes anunexpected 1-flag before the counter reaches a count of NZ, this canindicate a quantization error. In such case, the sample can be stored tothe image buffer and the Rx beamformer can start counting the number of0-flags until the counter again reaches NZ. If the beamformer notes anunexpected 0-flag when the counter reaches NZ, this can indicate achange in the slope of the delay curve. In such case, the sample can bediscarded and the beamformer can increase the value of NZ by one. Thisprocess can be repeated until the last pixel in the image line isreconstructed.

FIG. 9 is a flowchart of a method for ultrasound beamforming using aflag table or compressed flag table. The method 900 consists of thesteps of directing a beam of ultrasound energy at a region of interest,receiving ultrasound signals from portions of the region of interest,generating RF signals based on received ultrasound signals, amplifyingand digitizing the RF signals received, generating a flag table for eachbeam and for each data channel, optionally compressing the flag table,optionally decoding the compressed flag table, processing each of the RFsamples based on the flag table, and processing image data to provideprocessed image data.

In step 902, one or more beams of ultrasound energy are directed at aregion of interest. The one or more beams can generate ultrasoundsignals along a scanline corresponding to a line in an image. Thescanline can be defined by a trajectory of the one or more beams throughthe region of interest.

In step 904, ultrasound signals are received from portions of the regionof interest. The ultrasound signals can arise from reflections of theultrasound energy from portions of the region of interest that lie alonga scanline of the one or more beams. The ultrasound signals can bereceived by one or more ultrasound transducers in one or more ultrasoundtransducer arrays. Each of the one or more ultrasound transducers can bereferred to as a data channel.

In step 906, RF signals are generated based on the received ultrasoundsignals. The received signals can arise from reflections of theultrasound energy from portions of the region of the interest that liealong a scanline of the one or more beams. The RF signals can begenerated by causing each of the one or more transducers to vibrate.

In step 908, the RF signals received from the plurality of channels areamplified and digitized. The RF signals can be sampled to provide RFsamples at an RF sampling rate that is associated with a data clock. Thedata clock can have a clock cycle. At each clock cycle, an RF sample canbe received by each of the one or more data channels. Each RF sample canbe associated with an ultrasound signal emanating from a location alonga scanline of the one or more beams.

In step 910, a flag table is generated for each beam and for each datachannel. The flag table can comprise a flag associated with each of theRF samples. The flag table may comprise an ordered list of flags. Theordering may correspond to the RF sample index. For instance, the firstflag may correspond to the first RF sample index, the second flag maycorrespond to the second RF sample index, etc. The RF sample index cancorrespond to a delay time associated with receiving an RF sample. Thedelay time can be based on the data clock. Each flag can be a single-bitbinary flag indicator. Each binary flag indicator can have a positive ora negative value. The positive value can comprise a 1-flag. The negativevalue can comprise a 0-flag.

In step 912, the flag table is compressed. The compression of the flagtable can comprise the step of assigning an initial NZ based on thenumber of negative binary flag indicators occurring between the firstand second positive binary flag indicators in the flag table. Thecompression can further comprise assuming that the next positiveindicator will be attained after NZ negative indicators and examiningthe flag table to determine whether this behavior is observed. Thecompression can further comprise storing the index of the flag at whichan expected value failed to occur if the flag table fails to conform tothis behavior. If an unexpected 1-flag occurs, the compression cancomprise storing the index of the unexpected 1-flag. If an unexpected0-flag occurs, the compression can comprise storing the index of theunexpected 0-flag and incrementing the value of NZ. The compression cancomprise continuing to scan the flag table until the last flag has beenchecked.

In step 914, the compressed flag table is decoded. The decoding of thecompressed flag table can comprise noting the index of the first used RFsample and an initial NZ. The decoding of the compressed flag table canfurther comprise utilizing a counter to track the number of 0-flags thathave occurred since the last 1-flag. The decoding of the compressed flagtable can further comprise storing a first used RF sample to a firstimage pixel location in an image buffer when the current RF sample indexreaches the value of the first used RF sample index. The decoding of thecompressed flag table can further comprise skipping the next NZ samplesbefore storing an RF sample to the next location in the image bufferwhen the counter reaches NZ. The decoding of the compressed flag tablecan further comprise accounting for indices that do not match the flagpattern expected from the value of NZ. The decoding of the compressedflag table can further comprise storing a sample to the image bufferwhen an unexpected 1-flag is encountered before the counter reaches acount of NZ.

The decoding of the compressed flag table can further comprisediscarding a sample when an unexpected 0-flag is encountered when thecounter reaches a value of NZ and incrementing the value of NZ. Thedecoding of the compressed flag table can further comprise repeatingthis process until the last pixel in the image line is reconstructed.

In step 916, each of the RF samples is processed based on the flagtable. The processing can occur for each data channel and for eachultrasound beam directed to the region of interest. The data channelscan comprise one or more edge channels characterized by being located ata farthest point from the center of the transducer array. The datachannels can comprise two edge channels. For instance, a lineartransducer array may comprise two edge channels corresponding to theends of the linear array. The data channels can comprise more than twoedge channels. For instance, a square transducer array may comprise fouredge channels corresponding to the corners of the square array. Inanother example, a circular transducer array may compromise a pluralityof channels located on an outermost radius of the circular array. Thedata channels can comprise zero edge channels. For instance, an annulararray may have all channels located at the same distance from a centerof the array and therefore may have no edge channels.

The processing can comprise receiving an RF sample at a first clockcycle of the data clock. The RF sample can be associated with a locationalong a scanline defined by a trajectory of one or more ultrasound beamsthrough a region of interest. The processing can further comprisesending the RF sample to a first pixel in a per-channel image buffer ifthe flag associated with the received RF sample has a positive indicatorvalue. The processing can comprise sending the RF sample to a firstpixel in a per-channel image buffer only if the flag associated with thereceived RF sample is the first positive flag. The processing canfurther comprise discarding the received RF sample if the flagassociated with the received RF sample has a negative indicator value.The processing can further comprise receiving a subsequent RF samplecorresponding to a next clock cycle of the data clock. The processingcan further comprise sending the subsequent RF sample to a first pixelin a per-channel image buffer if the flag associated with the subsequentRF sample has a positive indicator value. The processing can comprisesending the subsequent RF sample to a first pixel in a per-channel imagebuffer only if the flag associated with the received RF sample is thefirst positive flag. The processing can further comprise discarding thesubsequent RF sample if the flag associated with the subsequent RFsample has a negative indicator value. The processing can furthercomprise repeating receiving and either retaining or discarding eachsubsequent RF sample until all edge channels receive the RF samplescorresponding to the last image pixel in an image line. The processingcan further comprise adding the RF samples corresponding to a pixel fromall data channels to generate an image value for the pixel.

In step 918, the raw image data is processed to provide processed imagedata. The processing can comprise any processing as is known to onehaving skill in the art.

The method 900 can produce a maximum delay error that is no more thanhalf of an RF sampling period. The method 900 can allow a decision aboutwhether an RF sample is to be used for a certain pixel or not in lessthan one RF sampling clock cycle after the data sample is captured.

A person of ordinary skill in the art will recognize many variations,alterations and adaptations based on the disclosure provided herein. Forexample, the order of the steps of the method 900 can be changed, someof the steps removed, some of the steps duplicated, and additional stepsadded as appropriate. Some of the steps can be performed in succession.Some of the steps can be performed in parallel. Some of the steps can beperformed once. Some of the steps can be performed more than once. Someof the steps can comprise sub-steps. Some of the steps can be automatedand some of the steps can be manual. The processor as described hereincan comprise one or more instructions to perform at least a portion ofone or more steps of the method 900.

The systems and methods described herein can be utilized to reconstructultrasound images

Digital Processing Device

In some embodiments, the platforms, systems, media, and methodsdescribed herein can comprise a digital processing device, or use of thesame. In further embodiments, the digital processing device can compriseone or more hardware central processing units (CPUs) or general purposegraphics processing units (GPGPUs) that carry out the device'sfunctions. In still further embodiments, the digital processing devicecan further comprise an operating system configured to performexecutable instructions. In some embodiments, the digital processingdevice can be optionally connected to a computer network. In furtherembodiments, the digital processing device can be optionally connectedto the Internet such that it accesses the World Wide Web. In stillfurther embodiments, the digital processing device can be optionallyconnected to a cloud computing infrastructure. In other embodiments, thedigital processing device can be optionally connected to an intranet. Inother embodiments, the digital processing device can be optionallyconnected to a data storage device.

In accordance with the description herein, suitable digital processingdevices can include, by way of non-limiting examples, server computers,desktop computers, laptop computers, notebook computers, sub-notebookcomputers, netbook computers, netpad computers, set-top computers, mediastreaming devices, handheld computers, Internet appliances, mobilesmartphones, tablet computers, personal digital assistants, video gameconsoles, and vehicles. Those of skill in the art will recognize thatmany smartphones are suitable for use in the system described herein.Those of skill in the art will also recognize that select televisions,video players, and digital music players with optional computer networkconnectivity are suitable for use in the system described herein.Suitable tablet computers include those with booklet, slate, andconvertible configurations, known to those of skill in the art.

In some embodiments, the digital processing device can comprise anoperating system configured to perform executable instructions. Theoperating system can be, for example, software, including programs anddata, which manages the device's hardware and provides services forexecution of applications. Those of skill in the art will recognize thatsuitable server operating systems include, by way of non-limitingexamples, FreeBSD, OpenBSD, NetBSD, Linux, Apple® Mac OS X Server®,Oracle® Solaris®, Windows Server®, and Novell® NetWare®. Those of skillin the art will recognize that suitable personal computer operatingsystems include, by way of non-examples, Microsoft® Windows®, Apple® MacOS X®, UNIX®, and UNIX-like operating systems such as GNU/Linux®. Insome embodiments, the operating system is provided by cloud computing.Those of skill in the art will also recognize that suitable mobile smartphone operating systems include, by way of non-limiting examples, Nokia®Symbian® OS, Apple® iOS®, Research In Motion® BlackBerry OS®, Google®Android®, Microsoft® Windows Phone® OS, Microsoft® Windows Mobile® OS,Linux®, and Palm® WebOS®. Those of skill in the art will also recognizethat suitable media streaming device operating systems include, by wayof non-limiting examples, Apple TV®, Roku®, Boxee®, Google TV®, GoogleChromecast®, Amazon Fire®, and Samsung® HomeSync®. Those of skill in theart will also recognize that suitable video game console operatingsystems include, by way of non-limiting examples, Sony® PS3®, Sony®PS4®, Microsoft® Xbox 360®, Microsoft Xbox One, Nintendo® Wii®,Nintendo® Wii U®, and Ouya®.

In some embodiments, the device can include a storage and/or memorydevice. The storage and/or memory device can be one or more physicalapparatuses used to store data or programs on a temporary or permanentbasis. In some embodiments, the device can be volatile memory andrequires power to maintain stored information. In some embodiments, thevolatile memory can comprise dynamic random-access memory (DRAM). Insome embodiments, the device can be non-volatile memory and retainsstored information when the digital processing device is not powered. Infurther embodiments, the non-volatile memory can comprise flash memory.In some embodiments, the non-volatile memory can comprise ferroelectricrandom access memory (FRAM). In some embodiments, the non-volatilememory can comprise phase-change random access memory (PRAM). In otherembodiments, the device is a storage device including, by way ofnon-limiting examples, CD-ROMs, DVDs, flash memory devices, magneticdisk drives, magnetic tapes drives, optical disk drives, and cloudcomputing based storage. In further embodiments, the storage and/ormemory device is a combination of devices such as those disclosedherein.

In some embodiments, the digital processing device can include a displayto send visual information to a user. In some embodiments, the displaycan be a cathode ray tube (CRT). In some embodiments, the display can bea liquid crystal display (LCD). In further embodiments, the display canbe a thin film transistor liquid crystal display (TFT-LCD). In someembodiments, the display can be an organic light emitting diode (OLED)display. In various further embodiments, an OLED display can be apassive-matrix OLED (PMOLED) or active-matrix OLED (AMOLED) display. Insome embodiments, the display can be a plasma display. In otherembodiments, the display can be a video projector. In still furtherembodiments, the display can be a combination of devices such as thosedisclosed herein.

In some embodiments, the digital processing device can include an inputdevice to receive information from a user. In some embodiments, theinput device can be a keyboard. In some embodiments, the input devicecan be a pointing device including, by way of non-limiting examples, amouse, trackball, track pad, joystick, game controller, or stylus. Insome embodiments, the input device is a touch screen or a multi-touchscreen. In other embodiments, the input device can be a microphone tocapture voice or other sound input. In other embodiments, the inputdevice can be a video camera or other sensor to capture motion or visualinput. In further embodiments, the input device can be a Kinect, LeapMotion, or the like. In still further embodiments, the input device canbe a combination of devices such as those disclosed herein.

Referring to FIG. 10, in a particular embodiment, an exemplary digitalprocessing device 1001 is programmed or otherwise configured to performultrasound beamforming as described herein. The device 1001 can regulatevarious aspects of the ultrasound beamforming of the present disclosure,such as, for example, performing processing steps. In this embodiment,the digital processing device 1001 includes a central processing unit(CPU, also “processor” and “computer processor” herein) 1005, which canbe a single core or multi core processor, or a plurality of processorsfor parallel processing. The digital processing device 1001 alsoincludes memory or memory location 1010 (e.g., random-access memory,read-only memory, flash memory), electronic storage unit 1015 (e.g.,hard disk), communication interface 1020 (e.g., network adapter) forcommunicating with one or more other systems, and peripheral devices1025, such as cache, other memory, data storage and/or electronicdisplay adapters. The memory 1010, storage unit 1015, interface 1020 andperipheral devices 1025 are in communication with the CPU 1005 through acommunication bus (solid lines), such as a motherboard. The storage unit1015 can be a data storage unit (or data repository) for storing data.The digital processing device 1001 can be operatively coupled to acomputer network (“network”) 1030 with the aid of the communicationinterface 1020. The network 1030 can be the Internet, an internet and/orextranet, or an intranet and/or extranet that is in communication withthe Internet. The network 1030 in some cases is a telecommunicationand/or data network. The network 1030 can include one or more computerservers, which can enable distributed computing, such as cloudcomputing. The network 1030, in some cases with the aid of the device1001, can implement a peer-to-peer network, which can enable devicescoupled to the device 1001 to behave as a client or a server.

Continuing to refer to FIG. 10, the CPU 1005 can execute a sequence ofmachine-readable instructions, which can be embodied in a program orsoftware. The instructions can be stored in a memory location, such asthe memory 1010. The instructions can be directed to the CPU 1005, whichcan subsequently program or otherwise configure the CPU 1005 toimplement methods of the present disclosure. Examples of operationsperformed by the CPU 1005 can include fetch, decode, execute, and writeback. The CPU 1005 can be part of a circuit, such as an integratedcircuit. One or more other components of the device 1001 can be includedin the circuit. In some cases, the circuit is an application specificintegrated circuit (ASIC) or a field programmable gate array (FPGA).

Continuing to refer to FIG. 10, the storage unit 1015 can store files,such as drivers, libraries and saved programs. The storage unit 1015 canstore user data, e.g., user preferences and user programs. The digitalprocessing device 1001 in some cases can include one or more additionaldata storage units that are external, such as located on a remote serverthat is in communication through an intranet or the Internet.

Continuing to refer to FIG. 10, the digital processing device 1001 cancommunicate with one or more remote computer systems through the network1030. For instance, the device 1001 can communicate with a remotecomputer system of a user. Examples of remote computer systems includepersonal computers (e.g., portable PC), slate or tablet PCs (e.g.,Apple® iPad, Samsung® Galaxy Tab), telephones, Smart phones (e.g.,Apple® iPhone, Android-enabled device, Blackberry®), or personal digitalassistants.

Methods as described herein can be implemented by way of machine (e.g.,computer processor) executable code stored on an electronic storagelocation of the digital processing device 1001, such as, for example, onthe memory 1010 or electronic storage unit 1015. The machine executableor machine readable code can be provided in the form of software. Duringuse, the code can be executed by the processor 1005. In some cases, thecode can be retrieved from the storage unit 1015 and stored on thememory 1010 for ready access by the processor 1005. In some situations,the electronic storage unit 1015 can be precluded, andmachine-executable instructions are stored on memory 1010.

Non-Transitory Computer Readable Storage Medium

In some embodiments, the platforms, systems, media, and methodsdisclosed herein can include one or more non-transitory computerreadable storage media encoded with a program including instructionsexecutable by the operating system of an optionally networked digitalprocessing device. In further embodiments, a computer readable storagemedium can be a tangible component of a digital processing device. Instill further embodiments, a computer readable storage medium can beoptionally removable from a digital processing device. In someembodiments, a computer readable storage medium can include, by way ofnon-limiting examples, CD-ROMs, DVDs, flash memory devices, solid statememory, magnetic disk drives, magnetic tape drives, optical disk drives,cloud computing systems and services, and the like. In some cases, theprogram and instructions can be permanently, substantially permanently,semi-permanently, or non-transitorily encoded on the media.

Computer Program

In some embodiments, the platforms, systems, media, and methodsdisclosed herein can include at least one computer program, or use ofthe same. A computer program can include a sequence of instructions,executable in the digital processing device's CPU, written to perform aspecified task. Computer readable instructions can be implemented asprogram modules, such as functions, objects, Application ProgrammingInterfaces (APIs), data structures, and the like, that performparticular tasks or implement particular abstract data types. In lightof the disclosure provided herein, those of skill in the art willrecognize that a computer program can be written in various versions ofvarious languages.

The functionality of the computer readable instructions can be combinedor distributed as desired in various environments. In some embodiments,a computer program can comprise one sequence of instructions. In someembodiments, a computer program can comprise a plurality of sequences ofinstructions. In some embodiments, a computer program can be providedfrom one location. In other embodiments, a computer program can beprovided from a plurality of locations. In various embodiments, acomputer program can include one or more software modules. In variousembodiments, a computer program can include, in part or in whole, one ormore web applications, one or more mobile applications, one or morestandalone applications, one or more web browser plug-ins, extensions,add-ins, or add-ons, or combinations thereof.

Web Application

In some embodiments, a computer program can include a web application.In light of the disclosure provided herein, those of skill in the artwill recognize that a web application, in various embodiments, utilizesone or more software frameworks and one or more database systems. Insome embodiments, a web application is created upon a software frameworksuch as Microsoft®.NET or Ruby on Rails (RoR). In some embodiments, aweb application can utilize one or more database systems including, byway of non-limiting examples, relational, non-relational, objectoriented, associative, and XML database systems. In further embodiments,suitable relational database systems can include, by way of non-limitingexamples, Microsoft® SQL Server, mySQL™, and Oracle®. Those of skill inthe art will also recognize that a web application, in variousembodiments, is written in one or more versions of one or morelanguages. A web application can be written in one or more markuplanguages, presentation definition languages, client-side scriptinglanguages, server-side coding languages, database query languages, orcombinations thereof. In some embodiments, a web application can bewritten to some extent in a markup language such as Hypertext MarkupLanguage (HTML), Extensible Hypertext Markup Language (XHTML), oreXtensible Markup Language (XML). In some embodiments, a web applicationcan be written to some extent in a presentation definition language suchas Cascading Style Sheets (CSS). In some embodiments, a web applicationcan be written to some extent in a client-side scripting language suchas Asynchronous Javascript and XML (AJAX), Flash® Actionscript,Javascript, or Silverlight®. In some embodiments, a web application iswritten to some extent in a server-side coding language such as ActiveServer Pages (ASP), ColdFusion®, Perl, Java™, JavaServer Pages (JSP),Hypertext Preprocessor (PHP), Python™, Ruby, Tcl, Smalltalk, WebDNA®, orGroovy. In some embodiments, a web application can be written to someextent in a database query language such as Structured Query Language(SQL). In some embodiments, a web application integrates enterpriseserver products such as IBM® Lotus Domino®. In some embodiments, a webapplication can include a media player element. In various furtherembodiments, a media player element can utilize one or more of manysuitable multimedia technologies including, by way of non-limitingexamples, Adobe® Flash®, HTML 5, Apple® QuickTime®, Microsoft®Silverlight®, Java™, and Unity®.

Mobile Application

In some embodiments, a computer program can include a mobile applicationprovided to a mobile digital processing device. In some embodiments, themobile application can be provided to a mobile digital processing deviceat the time it is manufactured. In other embodiments, the mobileapplication can be provided to a mobile digital processing device viathe computer network described herein.

In view of the disclosure provided herein, a mobile application can becreated by techniques known to those of skill in the art using hardware,languages, and development environments known to the art. Those of skillin the art will recognize that mobile applications can be written inseveral languages. Suitable programming languages include, by way ofnon-limiting examples, C, C++, C #, Objective-C, Java™, Javascript,Pascal, Object Pascal, Python™, Ruby, VB.NET, WML, and XHTML/HTML withor without CSS, or combinations thereof.

Suitable mobile application development environments are available fromseveral sources. Commercially available development environments caninclude, by way of non-limiting examples, AirplaySDK, alcheMo,Appcelerator®, Celsius, Bedrock, Flash Lite, .NET Compact Framework,Rhomobile, and WorkLight Mobile Platform. Other development environmentsare available without cost including, by way of non-limiting examples,Lazarus, MobiFlex, MoSync, and Phonegap. Also, mobile devicemanufacturers distribute software developer kits including, by way ofnon-limiting examples, iPhone and iPad (iOS) SDK, Android™ SDK,BlackBerry® SDK, BREW SDK, Palm® OS SDK, Symbian SDK, webOS SDK, andWindows® Mobile SDK.

Those of skill in the art will recognize that several commercial forumsare available for distribution of mobile applications including, by wayof non-limiting examples, Apple® App Store, Google® Play, ChromeWebStore, BlackBerry® App World, App Store for Palm devices, App Catalogfor webOS, Windows® Marketplace for Mobile, Ovi Store for Nokia®devices, Samsung® Apps, and Nintendo® DSi Shop.

Standalone Application

In some embodiments, a computer program can comprise a standaloneapplication, which is a program that is run as an independent computerprocess, not an add-on to an existing process, e.g., not a plug-in.Those of skill in the art will recognize that standalone applicationsare often compiled. A compiler is a computer program(s) that transformssource code written in a programming language into binary object codesuch as assembly language or machine code. Suitable compiled programminglanguages include, by way of non-limiting examples, C, C++, Objective-C,COBOL, Delphi, Eiffel, Java™, Lisp, Python™, Visual Basic, and VB .NET,or combinations thereof. Compilation is often performed, at least inpart, to create an executable program. In some embodiments, a computerprogram includes one or more executable complied applications.

Web Browser Plug-in

In some embodiments, the computer program includes a web browser plug-in(e.g., extension, etc.). In computing, a plug-in is one or more softwarecomponents that add specific functionality to a larger softwareapplication. Makers of software applications support plug-ins to enablethird-party developers to create abilities that extend an application,to support easily adding new features, and to reduce the size of anapplication. When supported, plug-ins enable customizing thefunctionality of a software application. For example, plug-ins arecommonly used in web browsers to play video, generate interactivity,scan for viruses, and display particular file types. Those of skill inthe art will be familiar with several web browser plug-ins including,Adobe® Flash® Player, Microsoft® Silverlight®, and Apple® QuickTime®. Insome embodiments, the toolbar comprises one or more web browserextensions, add-ins, or add-ons. In some embodiments, the toolbarcomprises one or more explorer bars, tool bands, or desk bands.

In view of the disclosure provided herein, those of skill in the artwill recognize that several plug-in frameworks are available that enabledevelopment of plug-ins in various programming languages, including, byway of non-limiting examples, C++, Delphi, Java™, PHP, Python™, and VB.NET, or combinations thereof.

Web browsers (also called Internet browsers) are software applications,designed for use with network-connected digital processing devices, forretrieving, presenting, and traversing information resources on theWorld Wide Web. Suitable web browsers include, by way of non-limitingexamples, Microsoft® Internet Explorer®, Mozilla® Firefox®, Google®Chrome, Apple® Safari®, Opera Software® Opera®, and KDE Konqueror. Insome embodiments, the web browser is a mobile web browser. Mobile webbrowsers (also called mircrobrowsers, mini-browsers, and wirelessbrowsers) are designed for use on mobile digital processing devicesincluding, by way of non-limiting examples, handheld computers, tabletcomputers, netbook computers, subnotebook computers, smartphones, musicplayers, personal digital assistants (PDAs), and handheld video gamesystems. Suitable mobile web browsers include, by way of non-limitingexamples, Google® Android® browser, RIM BlackBerry® Browser, Apple®Safari®, Palm® Blazer, Palm® WebOS® Browser, Mozilla® Firefox® formobile, Microsoft® Internet Explorer® Mobile, Amazon® Kindle® Basic Web,Nokia® Browser, Opera Software® Opera® Mobile, and Sony® PSP™ browser.

Software Modules

In some embodiments, the platforms, systems, media, and methodsdisclosed herein can include software, server, and/or database modules,or use of the same. In view of the disclosure provided herein, softwaremodules can be created by techniques known to those of skill in the artusing machines, software, and languages known to the art. The softwaremodules disclosed herein can be implemented in a multitude of ways. Invarious embodiments, a software module comprises a file, a section ofcode, a programming object, a programming structure, or combinationsthereof. In further various embodiments, a software module comprises aplurality of files, a plurality of sections of code, a plurality ofprogramming objects, a plurality of programming structures, orcombinations thereof. In various embodiments, the one or more softwaremodules can comprise, by way of non-limiting examples, a webapplication, a mobile application, and a standalone application. In someembodiments, software modules can be in one computer program orapplication. In other embodiments, software modules can be in more thanone computer program or application. In some embodiments, softwaremodules can be hosted on one machine. In other embodiments, softwaremodules can be hosted on more than one machine. In further embodiments,software modules can be hosted on cloud computing platforms. In someembodiments, software modules can be hosted on one or more machines inone location. In other embodiments, software modules can be hosted onone or more machines in more than one location.

Databases

In some embodiments, the platforms, systems, media, and methodsdisclosed herein can include one or more databases, or use of the same.In view of the disclosure provided herein, those of skill in the artwill recognize that many databases are suitable for storage andretrieval of information. In various embodiments, suitable databases caninclude, by way of non-limiting examples, relational databases,non-relational databases, object oriented databases, object databases,entity-relationship model databases, associative databases, and XMLdatabases. Further non-limiting examples include SQL, PostgreSQL, MySQL,Oracle, DB2, and Sybase. In some embodiments, a database isinternet-based. In further embodiments, a database can be web-based. Instill further embodiments, a database can be cloud computing-based. Inother embodiments, a database can be based on one or more local computerstorage devices.

EXAMPLES

FIG. 11 shows example pseudocode for implementing flag table basedultrasound beamforming with a compressed flag table. The pseudocodeutilizes variables k (corresponding to a RAM address), zc (correspondingto a counter of the number of adjacent 0-flags counted), r(corresponding to a pixel index), and nz (corresponding to expectednumber of zeros to be encountered between two 1-flags). The variable nzcorresponds to the value NZ described herein. The pseudocode can processRF samples and can utilize an index i corresponding to the current indexof each RF sample. The pseudocode can perform real-time decompression ofthe compressed flag table to select which RF samples are to be used toreconstruct an image.

When the RF sample index i is smaller than the 1^(st) RF sample index,the pseudocode does nothing. When the RF sample index i is made equal tothe 1^(st) RF sample index, the pseudocode adds the value of the RFsample to a first pixel in an array of image pixels. The pseudocode thenincrements r to move to the next pixel. The pseudocode resets the valueof the counter zc to 0. The pseudocode increments the value of k to asecond RAM address.

For values of i greater than the 1^(st) RF sample index, the pseudocodecompares zc to nz. When zc is smaller than nz and i is equal to k^(th)RF sample index stored in the compressed flag table, an unexpected1-flag has been encountered, and the pseudocode adds the value of the RFsample to the r^(th) pixel in an array of image pixels. The pseudocodethen increments r to move to the next pixel and resets the value of thecounter zc to 0. The pseudocode increments the value of k to the nextRAM address (corresponding to the next RF sample index that does notmatch the expected flag pattern). When zc is smaller than nz and i isnot equal to k^(th) RF sample index stored in the compressed flag table,an expected 0-flag has been encountered, and the pseudocode incrementszc.

When zc is equal to nz and i is equal to k^(th) RF sample index storedin the compressed flag table, an unexpected 0-flag has been encountered,and the pseudocode increments zc, nz, and k. When zc is equal to nz andi is not equal to k^(th) RF sample index stored in the compressed flagtable, an expected 1-flag has been encountered, and the pseudocode addsthe value of the RF sample to the r^(th) pixel in an array of imagepixels. The pseudocode then increments r to move to the next pixel andresets the value of the counter zc to 0.

FIG. 12 shows example circuitry for implementing flag table basedultrasound beamforming with a compressed flag table. The circuitrycomprises a compressed flag table (CFT), OR gates (OR1, OR2, OR3, OR4,and OR5), counters (ZC, NZ, and FL_NO), comparators (Comparator1,Comparator2, Comparator3, and Comparator 3b), NOT gates (Inverterl andInverter2), AND gates (AND1, AND2, AND3, AND4, AND5, AND6, AND7), and aBitBasher. The circuitry depicted in FIG. 12 is a direct implementationof the pseudocode described in FIG. 11 followed by logic reduction.Hence, the circuitry depicted in FIG. 12 may perform an identicalfunctionality as the pseudocode described in FIG. 11, namely,implementing flag table based ultrasound beamforming with a compressedflag table.

While preferred embodiments of the present invention have been shown anddescribed herein, it will be obvious to those skilled in the art thatsuch embodiments are provided by way of example only. It is not intendedthat the invention be limited by the specific examples provided withinthe specification. While the invention has been described with referenceto the aforementioned specification, the descriptions and illustrationsof the embodiments herein are not meant to be construed in a limitingsense. Numerous variations, changes, and substitutions will now occur tothose skilled in the art without departing from the invention.Furthermore, it shall be understood that all aspects of the inventionare not limited to the specific depictions, configurations or relativeproportions set forth herein which depend upon a variety of conditionsand variables. It should be understood that various alternatives to theembodiments of the invention described herein can be employed inpracticing the invention. It is therefore contemplated that theinvention shall also cover any such alternatives, modifications,variations or equivalents. It is intended that the following claimsdefine the scope of the invention and that methods and structures withinthe scope of these claims and their equivalents be covered thereby.

What is claimed is:
 1. An ultrasound device to generate an image of anobject, comprising: a plurality of transducer elements, wherein eachtransducer element is associated with a data channel, and wherein eachdata channel comprises a transducer that receives ultrasonic energyreflected by a region of interest and generates radio frequency (RF)signals based on the received reflected ultrasonic energy; a front-endunit that amplifies and digitizes the RF signals received from each datachannel to provide RF samples at an RF sampling rate associated with adata clock having a clock cycle, wherein an RF sample is received byeach data channel at each clock cycle corresponding to the RF samplingrate, and wherein each RF sample is associated with a location along ascanline defined by a trajectory of a beam of ultrasonic energy throughthe region of interest; a real-time beamformer having a transmitbeamformer and a flag table based receive beamformer, wherein thetransmit beamformer directs a beam of ultrasonic energy at a region ofinterest, the beam generating ultrasound signals along a scanlinedefined by a trajectory of the beam through the region of interest, andwherein the flag table-based receive beamformer receives reflectedultrasound signals from portions of the region of interest that liealong the scanline, the flag table-based receive beamformer comprising:a flag table generated for each beam and for each data channel, the flagtable comprising a flag associated with each of the RF samples providedby the front-end unit, wherein an RF index corresponds to a delay timeassociated with receiving an RF sample based on the data clock, andwherein each flag is a single-bit binary flag indicator having apositive or a non-positive value; a processor that generates raw imagedata comprising a plurality of pixels, the processor performingoperations in real-time comprising processing each of the RF samplesprovided by the front-end unit based on the flag table for each of thedata channels and for each beam of ultrasonic energy directed at theregion of interest, wherein the processing further comprises: a.receiving an RF sample at a clock cycle of the data clock, the RF sampleassociated with a location along the scanline defined by a trajectory ofthe beam through the region of interest; b. sending the received RFsample to a first pixel of the plurality of pixels in a per-data channelimage buffer if the flag associated with the received RF sample has apositive value and if the flag is a first positive flag; c. discardingthe received RF sample if the flag associated with the received RFsample has a non-positive value; d. receiving a subsequent RF samplecorresponding to a next clock cycle of the data clock; e. sending thesubsequent RF sample to a next pixel of the plurality of pixels in theper-data channel image buffer if the flag associated with the subsequentRF sample has a positive value; f. discarding the subsequent RF sampleif the flag associated with the subsequent RF sample has a non-positivevalue; g. repeating operations d, e, and f, until all of the datachannels receive an RF sample for a last pixel of the plurality ofpixels in the scanline; and h. adding the RF samples corresponding to apixel of the plurality of pixels from all of the data channels togenerate an image value for the pixel; and an image processor thatprocesses the raw image data to provide processed image data of theimage of the object.
 2. The ultrasound device of claim 1, wherein theflag table is compressed.
 3. The ultrasound device of claim 2, whereinthe processor performs further operations comprising decoding thecompressed flag table.
 4. The ultrasound device of claim 1, wherein theprocessor processes the RF samples provided by the front-end unit basedon the flag table without using an RF buffer to store the RF samples. 5.The ultrasound device of claim 1, wherein the flag table-based receivebeamformer comprises one or more field programmable gate array (FPGA)chips or an application-specific integrated circuit (ASIC).
 6. Theultrasound device of claim 5, wherein the one or more FPGA chips or theASIC comprises an equivalent gate count of no more than about 100,000gates exclusive of a memory component.
 7. A method of processingultrasound signals received from a plurality of data channels, themethod comprising: directing a beam of ultrasonic energy at a region ofinterest, the beam generating ultrasound signals along a scanlinedefined by a trajectory of the beam through the region of interest;receiving, by a plurality of data channels, reflected ultrasound signalsfrom portions of the region of interest that lie along the scanline;generating, by the plurality of data channels, radio frequency (RF)signals based on the received reflected ultrasound signals; amplifyingand digitizing the generated RF signals received from the plurality ofdata channels to provide RF samples at an RF sampling rate associatedwith a data clock having a clock cycle, wherein an RF sample is receivedby each of the plurality of data channels at each clock cyclecorresponding to the RF sampling rate, and wherein the RF sample isassociated with a location along the scanline defined by the trajectoryof the beam through the region of interest; generating a flag table foreach beam and for each data channel, the flag table comprising a flagassociated with each of the RF samples, wherein each RF indexcorresponds to a delay time associated with receiving an RF sample basedon the data clock, and wherein each flag is a single-bit binary flagindicator having a positive or a non-positive value; generating rawimage data comprising a plurality of pixels, wherein generating the rawimage data comprises processing each of the RF samples based on the flagtable for each of the data channels and for each beam of ultrasonicenergy directed at the region of interest, wherein the processingfurther comprises: a. receiving an RF sample at a clock cycle of thedata clock, the RF sample associated with a location along the scanlinedefined by a trajectory of the beam through the region of interest; b.sending the received RF sample to a first pixel of the plurality ofpixels in a per-data channel image buffer if the flag associated withthe received RF sample has a positive value and if the flag is a firstpositive flag; c. discarding the received RF sample if the flagassociated with the received RF sample has a non-positive value; d.receiving a subsequent RF sample corresponding to a next clock cycle ofthe data clock; e. sending the subsequent RF sample to a next pixel ofthe plurality of pixels in the per-data channel image buffer if the flagassociated with the subsequent RF sample has a positive value; f.discarding the subsequent RF sample if the flag associated with thesubsequent RF sample has a non-positive value; g. repeating operationsd, e, and f until all of the data channels receive an RF sample for alast pixel of the plurality of pixels in the scanline; and h. adding theRF samples corresponding to a pixel of the plurality of pixels from allof the data channels to generate an image value for the pixel; andprocessing the raw image data to provide processed image data.
 8. Themethod of claim 7, further comprising compressing the flag table.
 9. Themethod of claim 8, further comprising decoding the compressed flagtable.
 10. The method of claim 7, further comprising processing the RFsamples based on the flag table without using an RF buffer to store theRF samples.
 11. A system comprising: a processor; and one or morenon-transitory computer-readable media comprising instructions which,when executed by the processor, are operable to perform operationscomprising: directing a beam of ultrasonic energy at a region ofinterest, the beam generating ultrasound signals along a scanlinedefined by a trajectory of the beam through the region of interest;receiving, by a plurality of data channels, reflected ultrasound signalsfrom portions of the region of interest that lie along the scanline;generating, by the plurality of data channels, radio frequency (RF)signals based on the received reflected ultrasonic signals; amplifyingand digitizing the generated RF signals received from the plurality ofdata channels to provide RF samples at an RF sampling rate associatedwith a data clock having a clock cycle, wherein an RF sample is receivedby each of the plurality of data channels at each clock cyclecorresponding to the RF sampling rate, and wherein the RF sample isassociated with a location along the scanline defined by the trajectoryof the beam through the region of interest; generating a flag table foreach beam and for each data channel, the flag table comprising a flagassociated with each of the RF samples, wherein each RF indexcorresponds to a delay time associated with receiving an RF sample basedon the data clock, and wherein each flag is a single-bit binary flagindicator having a positive or a non-positive value; generating rawimage data comprising a plurality of pixels, wherein generating the rawimage data comprises processing each of the RF samples based on the flagtable for each of the data channels and for each beam of ultrasonicenergy directed at the region of interest, wherein the processingfurther comprises: a. receiving an RF sample at a clock cycle of thedata clock, the RF sample associated with a location along the scanlinedefined by a trajectory of the beam through the region of interest; b.sending the received RF sample to a first pixel of the plurality ofpixels in a per-data channel image buffer if the flag associated withthe received RF sample has a positive value and if the flag is a firstpositive flag; c. discarding the received RF sample if the flagassociated with the received RF sample has a non-positive value; d.receiving a subsequent RF sample corresponding to a next clock cycle ofthe data clock; e. sending the subsequent RF sample to a next pixel ofthe plurality of pixels in the per-data channel image buffer if the flagassociated with the subsequent RF sample has a positive value; f.discarding the subsequent RF sample if the flag associated with thesubsequent RF sample has a non-positive value; g. repeating operationsd, e, and f until all of the data channels receive RF samples for a lastpixel of the plurality of pixels of a scanline; and h. adding the RFsamples corresponding to a pixel of the plurality of pixels from all ofthe data channels to generate an image value for the pixel; andprocessing the raw image data to provide processed image data.
 12. Thesystem of claim 11, wherein the performed operations further comprisecompressing the flag table.
 13. The system of claim 12, wherein theperformed operations further comprise decoding the compressed flagtable.
 14. The system of claim 11, wherein the system comprises one ormore field programmable gate array (FPGA) chips or anapplication-specific integrated circuit (ASIC).
 15. The system of claim14, wherein the one or more FPGA chips or the ASIC comprises anequivalent gate count of no more than about 100,000 gates exclusive of amemory component.
 16. The system of claim 11, further comprising amemory used to process the raw image data to provide the processed imagedata, wherein the memory has a size of no more than 2.5 kilobytes (KB)per data channel.
 17. The system of claim 11, wherein the RF samples areprocessed based on the flag table without using an RF buffer to storethe RF samples.